package com.hanamaki.study.day02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.util.Set;

public class FireFoxDriverTestNg02WidowHandles {

    /* WebDriver 代表 浏览器 对象 */
    WebDriver driver;

    @BeforeClass
    public void setUp() {
        /* 1. 注册驱动的位置  */
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");

        /* 2, 注册驱动 */
        driver = new FirefoxDriver();

    }

    /**
     * 测试网页中的句柄问题
     */
    @Test
    public void firefox() {
        /* 打开网址测试  */
        driver.get("file:///E:/testhtml/exam/index.html");

        /* 首先做 元素定位  */
        WebElement element = driver.findElement(By.cssSelector("a[href]"));
        element.click();

        /*  一旦 超链接 a标签的  跳转方式 为_black 那么 在selenium 的自动化脚本中就要使用 句柄来解决 */
         /* 如果网页中有多个句柄  可以使用getWindowHandles 来获得网页中的所有的句柄来去操作 */
        Set<String> windowHandles = driver.getWindowHandles();
        /* set 集合是 无序的  并且不可重复 并且没有下标  */
        System.out.println("当前网页中的所有的句柄为：" + windowHandles);
        /* 集合转换为数组 */
        Object[] array = windowHandles.toArray();

        /* 如果已经获取了多个句柄 ，那么可以使用 switchTo来进行句柄的切换 */
        driver.switchTo().window(String.valueOf(array[1]));


        /*使用  xpath 的方式 来进行  复选框的元素定位 */
        WebElement element1 = driver.findElement(By.xpath("//input[@type='checkbox'][3]"));
        element1.click();

    }

}
